package com.woniuxy.dao;

import com.woniuxy.entity.Prescription;
import com.woniuxy.entity.PrescriptionAndPatient;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
@Mapper
public interface PrescriptionDao {

    /*
    * 根据挂号单Id，查询处方单编号
    * */
    Prescription selectByRegisterId(int registerId);
    /*
    * 获取所有处方信息
    * */
    List<Prescription> selectAllPrescriptions();

    //查询前台所需的诊单信息
    List<PrescriptionAndPatient> selectPreAndPatient(
            @Param("pageIndex")Integer pageIndex,
            @Param("pageSize")Integer pageSize,
            @Param("prescriptionStatus")Integer prescriptionStatus
    );

    //查询前台所需的诊单信息数目
    Integer selectPreAndPatientCount(
            @Param("prescriptionStatus")Integer prescriptionStatus
    );

    //更新支付状态
    Integer updateStatusByPrescriptionId(
            @Param("prescriptionNo")String prescriptionNo,
            @Param("prescriptionStatus")Integer prescriptionStatus
    );

    /*
    * 插入单条处方
    * 作用：建立基本信息的处方数据
    * */
    void insertPrescription(Prescription prescription);
    /*
    * 按处方条件查询处方
    * */
    List<Prescription> selectPrescriptionByCondition(
            @Param("prescription") Prescription prescription
            ,
            @Param("pageIndex") int pageIndex,
            @Param("pageSize") int pageSize
    );
    /*
    * 根据条件查询处方数量
    * */
    int getPrescriptionNum(@Param("prescription") Prescription prescription);

    /*
        根据病人id查询处方
     */
    Prescription getPrescriptByPatientId(int patientId);

    /*
        根据PatientId修改住院状态
    */
    void updateStatusByPatientId(int patientId);
    /*
    *  根据处方id修改为住院处方
    * */
    void updateStatusByPrescriptionNo(String prescriptionNo);
    /*
    * 根据处方号，修改处方上的病历conditionDetails
    * */
    void updateConditionDetailsByPrescriptionNo(@Param("prescriptionNo") String prescriptionNo,@Param("conditionDetails")String conditionDetails);
}
